/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.javahispano.javacup.tacticas.ejemplos;

import java.util.ArrayList;
import java.util.List;
import org.javahispano.javacup.gui.asistente.TacticaDetalleImpl;
import org.javahispano.javacup.modelo.Comando;
import org.javahispano.javacup.modelo.ComandoGolpearBalon;
import org.javahispano.javacup.modelo.ComandoIrA;
import org.javahispano.javacup.modelo.Posicion;
import org.javahispano.javacup.modelo.SituacionPartido;
import org.javahispano.javacup.modelo.Tactica;
import org.javahispano.javacup.modelo.TacticaDetalle;

/**
 *
 * @author Fabian
 */
public class TheNewPathetics implements Tactica {

    TacticaDetalleImpl detalle = new TacticaDetalleImpl(TheNewPathetics.class.getResource("thenewpathetics"));

    @Override
    public TacticaDetalle getDetalle() {
        return detalle;
    }
    ArrayList<Comando> comandos = new ArrayList<Comando>();
    Posicion[] juego = detalle.getAlineacion(2);

    @Override
    public List<Comando> ejecutar(SituacionPartido sp) {
        comandos.clear();
        for (int i = 0; i < 11; i++) {
            comandos.add(new ComandoIrA(i, juego[i]));
        }
        int[] cercanos = sp.balon().indicesMasCercanos(sp.misJugadores());
        for (int i = 0; i < 3; i++) {
            comandos.add(new ComandoIrA(cercanos[i], sp.balon()));
        }
        for (int i : sp.puedenRematar()) {
            double dist = 100000;
            int idx = -1;
            for (int j = 0; j < 11; j++) {
                if (j != i) {
                    double d = sp.misJugadores()[j].distancia(sp.rivales()[sp.misJugadores()[j].indiceMasCercano(sp.rivales())]);
                    if (d < dist) {
                        dist = d;
                        idx = j;
                    }
                }
            }
            comandos.add(new ComandoGolpearBalon(i, 90, 1, false));
        }
        return comandos;
    }

    @Override
    public Posicion[] getPosicionSaca(SituacionPartido sp) {
        return detalle.getAlineacion(1);
    }

    @Override
    public Posicion[] getPosicionRecive(SituacionPartido sp) {
        return detalle.getAlineacion(0);
    }
}
